/* generated using hyacc -g from calc.y

http://hyacc.sourceforge.net/

Hyacc is similar to Yacc in that it is a parser generator.
It is different from yacc in that it is a LR(1)/LALR(1)/LR(0) parser generator,
which means it can accept all LR(1) grammars.

This is more powerful than LALR(1) algorithm.

A LR(1) parser generator also does not have the "mysterious reduce/reduce conflict" problem.

Hyacc also supports LR(k) for limited cases.

*/
digraph abstract {

  node [shape = doublecircle]; 0 acc;
  node [shape = circle];
  0 -> r1 [ label="$end,\n,error,NUM,-,(" style="dashed" ];
  0 -> 1 [ label="input" ];
  1 -> acc [ label = "$end" ];
  1 -> 3 [ label="\n" ];
  1 -> 5 [ label="error" ];
  1 -> 6 [ label="NUM" ];
  1 -> 7 [ label="-" ];
  1 -> 8 [ label="(" ];
  1 -> 2 [ label="line" ];
  1 -> 4 [ label="exp" ];
  2 -> r2 [ label="(any)" style="dashed" ];
  3 -> r3 [ label="(any)" style="dashed" ];
  4 -> 14 [ label="\n" ];
  4 -> 10 [ label="+" ];
  4 -> 11 [ label="-" ];
  4 -> 9 [ label="*" ];
  4 -> 12 [ label="/" ];
  4 -> 13 [ label="^" ];
  5 -> 15 [ label="\n" ];
  6 -> r6 [ label="(any)" style="dashed" ];
  7 -> 6 [ label="NUM" ];
  7 -> 7 [ label="-" ];
  7 -> 8 [ label="(" ];
  7 -> 16 [ label="exp" ];
  8 -> 6 [ label="NUM" ];
  8 -> 7 [ label="-" ];
  8 -> 8 [ label="(" ];
  8 -> 17 [ label="exp" ];
  9 -> 6 [ label="NUM" ];
  9 -> 7 [ label="-" ];
  9 -> 8 [ label="(" ];
  9 -> 18 [ label="exp" ];
  10 -> 6 [ label="NUM" ];
  10 -> 7 [ label="-" ];
  10 -> 8 [ label="(" ];
  10 -> 19 [ label="exp" ];
  11 -> 6 [ label="NUM" ];
  11 -> 7 [ label="-" ];
  11 -> 8 [ label="(" ];
  11 -> 20 [ label="exp" ];
  12 -> 6 [ label="NUM" ];
  12 -> 7 [ label="-" ];
  12 -> 8 [ label="(" ];
  12 -> 21 [ label="exp" ];
  13 -> 6 [ label="NUM" ];
  13 -> 7 [ label="-" ];
  13 -> 8 [ label="(" ];
  13 -> 22 [ label="exp" ];
  14 -> r4 [ label="(any)" style="dashed" ];
  15 -> r5 [ label="(any)" style="dashed" ];
  16 -> r11 [ label="\n,+,-,*,/,)" style="dashed" ];
  16 -> 13 [ label="^" ];
  17 -> 10 [ label="+" ];
  17 -> 11 [ label="-" ];
  17 -> 9 [ label="*" ];
  17 -> 12 [ label="/" ];
  17 -> 13 [ label="^" ];
  17 -> 23 [ label=")" ];
  18 -> r9 [ label="\n,+,-,*,/,)" style="dashed" ];
  18 -> 13 [ label="^" ];
  19 -> r7 [ label="\n,+,-,)" style="dashed" ];
  19 -> 9 [ label="*" ];
  19 -> 12 [ label="/" ];
  19 -> 13 [ label="^" ];
  20 -> r8 [ label="\n,+,-,)" style="dashed" ];
  20 -> 9 [ label="*" ];
  20 -> 12 [ label="/" ];
  20 -> 13 [ label="^" ];
  21 -> r10 [ label="\n,+,-,*,/,)" style="dashed" ];
  21 -> 13 [ label="^" ];
  22 -> r12 [ label="\n,+,-,*,/,)" style="dashed" ];
  22 -> 13 [ label="^" ];
  23 -> r13 [ label="(any)" style="dashed" ];

}
